======================================================================= .7z 書庫 統合アーカイバ仕様圧縮解凍 DLL 7-ZIP32.DLL Version 3.13.00.04 ======================================================================= 秋田 稔 (2004/09/30) 0.はじめに このたびは「7-zip32.dll」をダウンロードして頂きありがとうございます。 これは Igor Pavlov 氏が開発し、高圧縮率で一部の人に支持されている 7z 形式の書庫の圧縮解凍及び、他の zip 互換プログラムより少しだけ 圧縮率の高い zip 書庫を作成することが可能です。 zip 書庫は Store, Deflate, Deflate64, Bzip2 方式の圧縮と Store, Implode, Deflate, Deflate64, Bzip2 方式の解凍が可能です。 Igor Pavlov 氏が作成された 7-Zip は以下のサイトより入手可能です。 http://www.7-zip.org/ また、現在 NIFTY-Serve FWINDC MES #3 にて進行中の『統合アーカイバ API仕様』(仮称)に準拠しています。 なお、「API仕様」は現在進行形のプロジェクトです。 したがって、この 7-zip32.DLL に含まれる機能も、 最終決定版ではないと言うことを充分に認識の上ご使用ください。 それから貴方のソフトでこの DLL に対応する場合、 出来るだけダイナミックリンク (LoadLibrary/GetProcAddress) で使用するようにして、7-zip32.dll が無い環境でも、 (7z 関係が使えないだけで) 問題なく動作するような設計にしてください。 1.ファイルについて 配布ファイルを展開すると以下のファイルが得られます。 7-zip32.txt : このドキュメント。 7-zip32.dll : ライブラリ本体。 7-zipCMD.txt : 7-zip32.dll でのコマンド等についての説明ファイル。 7-zipAPI.txt : 7-zip32.dll で使用できるAPIの説明書です。 7-zip32.h : 7-zip32.dll を使用するためのヘッダファイル。 7-zip32.lib : 7-zip32.dll を静的リンクするためのライブラリ。 なおこれはVC++用ですので、BC++等では使用出来ません。 また上記にも書いたように、出来ればこれは使わずに ダイナミックにリンクする方法をお取りください。 src.7z : 7-zip32.dll のソースファイルです。 2.使い方 これはライブラリのみですので、単独では使用できません。 A. プログラムから API については,7-zipAPI.txt をご覧ください。 7-zip32.dll を使用するには 7-zip32.h をインクルードし リンク時に 7-zip32.lib をリンクするか、 LoadLibrary()/GetProcAddress() によりダイナミックに リンクすることが必要です(出来るだけこちらの方法を)。 B. 一般ユーザーから この DLL を使用するためには、対応したアプリケーションが必要です。 また、この DLL は Windows のシステムフォルダ(通常は Windows 95 なら \Windows\system\、Windows NTなら \Windows\system32\)に コピーしてお使いください。 上記以外の場所に置くことは、今後の本 DLL のバージョンアップなどに よる仕様変更の際、重大な問題を引き起こす可能性もありますので、 十分注意が必要です。 3.著作権及び転載について ファイルの圧縮、解凍の基本部分の著作権は Igor Pavlov 氏にあります。 7z 圧縮方式の BZip2 アルゴリズムはJulian Seward 氏が作成し PPMD アルゴリズムは Dmitry Shkarin 氏が作成しています。 統合アーカイバ仕様の DLL 作成部分に関しては 私 (秋田 稔) が著作権を保有します。 7-zip32.dll は GNU Lesser General Public License (LGPL) の元で配布されています。 ソフトの改変、再配布等については LGPL に従ってください。 http://www.gnu.org/copyleft/lesser.ja.html また、本ソフトウェアを使用することによって如何なる損害が発生しても 作者は一切責任を負わないものとします。 全ては自己責任の元でお使いください。 4.サポート A. Web サイト http://akky.cjb.net/ B. メール akky@kun.ne.jp 基本的には質問等はWebサイトのサポート掲示板でお願いします。 それから統合アーカイバプロジェクトにてメーリングリストが 運営されていますので(統合アーカイバ DLL 全般を扱います) そちらも参考にして下さい。 また、統合アーカイバプロジェクトでは関連情報が公開されております。 合わせてご覧いただければ幸いです。 統合アーカイバプロジェクト http://www.csdinc.co.jp/archiver/  ご意見・ご感想などをお待ちしてます。  なお、添付ファイル付きメールはウィルス対策の為、全てサーバー上で  削除していますので絶対に送らないでください。 5.バージョン履歴 2004/9/27 Ver3.13.00.04 ・内蔵 SFX ファイルでの自己解凍書庫が出来なくなってたバグを修正。 2004/9/27 Ver3.13.00.03 ・Windows9x 系で使用出来ないバグを修正。Ver3.13.00.02 でのエンバグ。 ・Windows9x 系で経過ダイアログに経過数値が表示されてないバグを修正。 ・暗号化 zip 書庫解凍時でパスワードをキャンセルした際にゴミファイルが  残らないように修正。 ・ダイアログでキャンセルと半角で表示されていた所を全角に修正。 ・パスワード入力ダイアログのタイトルが常に同じだったバグを修正。 ・パスワードキャンセル時に ERROR_PASSWORD_FILE を返すように修正。 ・Ver3.13.00.02 でパスワードエラー時に ERROR_PASSWORD_FILE を返すよう  修正していたつもりが ERROR_DURING_DECOMPRESSION が返ってたのを修正。 2004/9/18 Ver3.13.00.02 ・SevenZipSetUnicode API を追加。  使用する文字コードを UTF-8 にする事で完全に UNICODE に対応可能。 ・内蔵自己解凍書庫でPPMdを扱えるように変更。 ・解凍するファイルのサイズの合計が 0 の場合、エラーを起こすバグを修正。 ・zip 形式の書庫で SevenZipGetWriteTimeEx が使えなかったのを修正。 ・暗号化 zip 書庫解凍時にパスワードが間違ってるとゴミファイルが  作成されるの削除するように修正。 ・暗号化 zip 書庫解凍時でパスワードが間違ってる場合は3回まで繰り返し  パスワード入力画面を表示するように修正。 ・暗号化 zip 書庫解凍時パスワードエラーの場合は ERROR_PASSWORD_FILE を  返すように修正。 ・SevenZipFindFirst で _szWildName に -sfx -hide 等、オプションで  使用されている文字列が指定出来ないバグを修正。 ・内部コードで ATL を使用しないように変更。 ・通常のビルドでも内部では完全に UNICODE で処理している為  コンパイルオプションから UNICODE 版の作成を削除しました。 ・7-zipCMD.txt のコマンドラインの様式の項目に説明を追加。 2004/2/23 Ver3.13.00.01 ・SFXモジュールを内蔵し自己解凍書庫を作成できる機能を追加。  -sfx オプションを引数なしで使用すれば作成可能。 ・base_dir が存在しない場合はエラーになるように変更。 ・SevenZipFindFirst で _szWildName が上手く機能しなくなったバグを修正。  Ver3.11.00.01 の Unicode 対応でのエンバグ。 ・海外版 Windows で使用されている特殊文字(umlaut)がDLL使用後に  そのアプリケーション内で使用すると他の文字に化けるバグを修正。 ・7-Zip 3.13 にてリビルド。(DLL部に関しては3.12と同等)  - 幾つかのバグを修正。 2003/10/9 Ver3.11.00.01 ・Unicode 対応の為の内部変更。 ・7-Zip 3.11 にてリビルド。  - 無作為のファイルの解凍速度を上げる為に、ソリッドブロックサイズに   以下の制限を使用します。   - 無圧縮 : 0 B   - 高速圧縮: 16 MB   - 標準圧縮: 256 MB   - 最高圧縮: 1 GB   - 超高圧縮: 4 GB  - WindowsNT/2000/XP/2003 において Unicode ファイル名をサポート。  - 幾つかのバグを修正。  2003/9/28 Ver3.10.00.01 ・7-Zip 3.10 にてリビルド。  解凍時に既存のファイルを自動的に改名するオプション。(-aot スイッチ)  幾つかのバグ修正。 2003/9/27 Ver3.09.02.02 ・環境によって使用するソフトを終了させてしまうバグを修正。  Ver3.09.01.01 のバグ修正によるエンバグ。 2003/9/21 Ver3.09.02.01 ・7-Zip 3.09.02 にてリビルド。  無作為のファイルを解凍する時のスピードを速める為の ソリッドブロックサイズを制限するオプション。(-ms スイッチ)  ※ LZMA 方式の圧縮で lc, lp, pb スイッチがサポートされ(て)た模様。 2003/9/11 Ver3.09.01.01 ・-hideオプションを使用している時、処理を抜ける瞬間に親ウィンドウの  タイトルバーを掴んでいると処理が抜けられなくなるバグを修正。 ・7-Zip 3.09.01 Beta にてリビルド。  実行可能ファイルの自動圧縮フィルタ:  dll, exe, ocx, sfx, sys, (-mf switch)  7z の圧縮レベル:   Fast: 32 KB 辞書, BCJ フィルタ   Normal: 2 MB 辞書, BCJ フィルタ   Maximum: 8 MB 辞書, BCJ フィルタ, 最大設定   Ultra: 32 MB 辞書, BCJ2 フィルタ, 最大設定  ソリッドブロックの再圧縮を必要としない場合に、  ソリッド 7z 書庫の更新をサポート。  7z 書庫の -mhcf スイッチはデフォルトになります。  幾つかのバグ修正。  ※ 本家の7-Zipにて予期しないディレクトリにファイルを解凍してしまう    セキュリティーホールの修正が行われています。    これにより指定した解凍先が基底フォルダとなります。 2003/8/25 Ver3.08.04.01 ・プロジェクトを最初から作り直し、内部変更多数。 ・SetOwnerWindow 系のAPIを実装。 ・経過ダイアログの見た目を変更。 ・ソースからUNICODE版をコンパイル可能に。(動作については無保証無検証) ・SevenZipOpenArchive でパスワードを求めらた場合に表示するダイアログを  呼び出したプロセスが作成したウィンドウを親にして表示するように修正。 ・7-Zip 3.08.04 Beta にてリビルド。  内部的に再建、使用するレジストリを削減。  幾つかのバグを修正。  ※ -mx オプションの指定方法が変更。(デフォルトの圧縮レベルが変更) ・絶対パス等を含むことで予期しないディレクトリにファイルを  解凍してしまうセキュリティーホールを修正。 2003/5/23 Ver2.30.32.01 ・7-Zip 2.30 Beta 32 にてリビルド。  幾つか細かな変更。 2003/4/30 Ver2.30.31.01 ・7-Zip 2.30 Beta 31 にてリビルド。  幾つかのバグを修正。 2003/4/20 Ver2.30.30.01 ・7-Zip 2.30 Beta 30 にてリビルド。  zip書庫でBZip方式の圧縮解凍をサポート。  ※ m={MethodID} オプションでDeflate64方式等の圧縮も可能に。  幾つかのバグを修正。  幾つかの最適化リコンパイルによりコードのサイズを縮小。 2003/4/10 Ver2.30.29.01 ・7-Zip 2.30 Beta 29 にてリビルド。  幾つかのバグを修正。  LZMAコードを少し変更。 2003/2/16 Ver2.30.28.01 ・7-Zip 2.30 Beta 28 にてリビルド。  4GB以上の7z書庫のUpdateする事ができるように修正。  7z形式で非アイテムを扱えるように修正。  zip形式で空の暗号化されたファイルを圧縮できるように修正。  7z形式のmaxモード(-mx)にて、辞書サイズを4MBの代わりに8MBを使います。 2003/1/25 Ver2.30.27.01 ・パスワード入力時のキャプションが間違ってたのを修正。 ・-mheオプションを使用し圧縮された書庫が解凍できなかったバグを修正。 ・7-Zip 2.30 Beta 27 にてリビルド。  非常に大きなファイルを7z形式で圧縮する際の幾つかのバグを修正。  幾つかのバグを修正。 2003/1/14 Ver2.30.26.01 ・7-Zip 2.30 Beta 26 にてリビルド。  zip書庫でDeflate64方式の解凍をサポート。  幾つかのバグを修正。 2003/1/5 Ver2.30.25.01 ・書庫操作後スレッドハンドルの開放をしていなかったバグを修正。 ・7-Zip 2.30 Beta 25 にてリビルド。  7z書庫の暗号化機能(AES-256)をサポート。  新しい書庫ヘッダ圧縮モードオプション(-mhcf)を追加。  書庫ヘッダ圧縮は常にLZMA方法で圧縮されます。  -ms=off 無しでも非ソリッド書庫のアップデートが可能です。  幾つかのバグを修正。 2002/11/8 Ver2.30.24.02 ・書庫に空のファイル若しくはディレクトリが含まれる場合、  常にソリッド書庫として判定されるバグを修正。 2002/11/5 Ver2.30.24.01 ・OpenArchive 系のAPIの実装方法を直接7-Zipから取得するように変更。  それにより以下のAPIの仕様変更。  SevenZipGetCRC 等でのCRC取得をサポート。  SevenZipGetMethod 等での圧縮方式取得をサポート。  SevenZipGetAttribute 等への出力形式をUnzip32.dll準拠に。  SevenZipGetCompressedSize 等でソリッド書庫の場合は 常に 0 を返すように変更。  SevenZipGetArcCompressedSize/Ex でソリッド書庫の場合は -1 を返すように変更。  SevenZipFindFirst/Next で空のディレクトリの取得をサポート。 ・日本語環境下以外では英語で表示するように変更したつもり。 ・上書き確認ダイアログでファイルの詳細を表示するように変更。 ・中止処理を7-Zipに任せるように変更。それにより若干の高速化と安定化。 ・SevenZipGetWriteTimeEx でローカル時間を返していたのを修正。 ・エラーコードをもう少しきちっと返すように修正。 ・複数の書庫を同時に開くと前の書庫のハンドルが無効になるバグを修正。 ・-hideオプションを使用ていない時はメッセージを送らないように修正。 ・ファイル属性の #define 識別子を定義してなかったのを修正。 ・7-Zip 2.30 Beta 24 にてリビルド。  幾つか内部を改造。  -mスイッチの構文を少し変更。  幾つかのバグを修正。 ・-oスイッチで指定した出力先フォルダが無い場合はエラーになる仕様は  7-Zip 2.30 Beta 22(Ver2.30.22.01)で作成されるように変更された模様。 ・SevenZipGetMethod で取得できる圧縮方式は、バッファを多く確保する事で より詳しい情報が取得できます。 ・書庫がソリッド書庫かどうかを判定する場合は  SevenZipGetArcCompressedSizeEx を使うべきです。 2002/9/9 Ver2.30.23.01 ・7-Zip 2.30 Beta 23 にてリビルド。  ZIP書庫の暗号化に対応。  幾つかのバグを修正。 2002/9/1 Ver2.30.22.01 ・7-Zip 2.30 Beta 22 にてリビルド。  現バージョンでは圧縮するファイルに絶対パスを使用出来ないように変更。  幾つかのバグ修正。 2002/7/9 Ver2.30.21.1 ・暗号化zip書庫でディレクトリを含む際、一覧が取得出来ないバグを修正。 ・7-Zip 2.30 Beta 21 にてリビルド。  LZMA(7z)圧縮に必要なRAMを軽減。 2002/7/2 Ver2.30.20.1 ・一般公開。 ・7-Zip 2.30 Beta 20 にてリビルド。  LZMA(7z)解凍時に必要なRAMを軽減。  幾つかのバグを修正。 2002/6/19 β8 ・-hide オプション使用時、DLL開放後にエラーで落ちるバグを修正。 ・処理状況ダイアログのフォントを変更。 2002/6/15 β7 ・APIの追加。(SevenZipGetArchiveType) ・圧縮を途中で中止すると一時ファイルがロックされて残るバグを修正。 ・ダイアログ抑制モードで親ウィンドウが非アクティブになるバグを修正。 ・ConfigDialog の中身を何も作ってなかったので  バージョン情報を表示するように変更。 ・一部APIの順序数がマニュアルと違っていたので修正。 2002/5/28 β6 ・SetOwnerWindow/Ex のメッセージ送信方法を若干変更。 ・SetOwnerWindow/Ex で中止させた時、ダイアログが消えないバグを修正。 ・-hide オプションが働いていなかったバグを修正。β5のエンバグ。 2002/5/27 β5 ・スイッチで最後が'\'で終わるものをと解釈するバグを修正。 ・ファイル名で最後が「ソ」等だとと解釈するバグを修正。 ・GetFileCount 時、メモリ開放バグがあったのを修正。 ・ある環境下で -hide オプションを指定すると固まるバグを修正。 2002/5/25 β4 ・ オプションに対応。 ・FindFirst で _szWildName に NULL を渡すと落ちてしまうバグを修正。 それに伴い GetFileCount 時に落ちてしまっていた。β3のエンバグ。 2002/5/23 β3 ・FindFirst/Next 時、取得出来るデータが一部おかしかったバグを修正。 ・FindFirst で _szWildName に複数指定できなかったバグを修正。 2002/5/21 β2 ・FindNext で検索するファイルが無い場合に -1 を返すように変更。 ・コマンドを""で括ると上手く動かなかったバグを修正。 ・SetOwnerWindow/Ex 後、CheckArchive をすると固まるバグを修正。 ・FindFirst/Next でカレントディレクトリ以外のファイルを 検索出来なかったバグを修正。 2002/5/18 β1 ・非公式公開。 ・7-Zip 2.30 Beta 18 にてビルド。 -----------------------------------------------------------------------